MySQL数据库基本操作首先我们先了解SQL的语言组成,他分为四个部分
数据定义语言(DDL)
数据操纵语言(DML)
数据控制语言(DCL)
数据查询语言(DQL)
数据定义DDL他主要包含三部分内容,对于数据库的常用操作,其次是对表结构的常用操作,
那说白了就是对数据库和表本身的修改,增加删除表,行和列等内容,不涉及数据本身
对数据库的常用操作
功能
SQL
查看所有数据库
show databases;
创建数据库
create database [if not exists] mydb1 [charset=utf8]
切换数据库
use mydb1;
删除数据库
drop database [if exists] mydb1;
修改数据库编码
alter database mydb1 character set utf8;
如果没有图形化界面,我们是需要使用第一个代码查看所有数据库
中括号内的文字表示可选项,可以写也可以不写,写的时候不需要带中括号,这里就用mydb1作为样例的名称,第一个可选项是因为存在时创建会报错
创建表语法...
原题链接1231. 航班时间
题目难度:简单
题目来源:第九届蓝桥杯省赛C++ A组,第九届蓝桥杯省赛Java A组
题目描述小 h 前往美国参加了蓝桥杯国际赛。
小 h 的女朋友发现小 h 上午十点出发,上午十二点到达美国,于是感叹到“现在飞机飞得真快,两小时就能到美国了”。
小 h 对超音速飞行感到十分恐惧。
仔细观察后发现飞机的起降时间都是当地时间。
由于北京和美国东部有 12 小时时差,故飞机总共需要 14 小时的飞行时间。
不久后小 h 的女朋友去中东交换。
小 h 并不知道中东与北京的时差。
但是小 h 得到了女朋友来回航班的起降时间。
小 h 想知道女朋友的航班飞行时间是多少。
对于一个可能跨时区的航班,给定来回程的起降时间。
假设飞机来回飞行时间相同,求飞机的飞行时间。
输入格式一个输入包含多组数据。
输入第一行为一个正整数 T,表示输入数据组数。
每组数据包含两行,第一行为去程的起降时间,第二行为回程的起降时间。
起降时间的格式如下:
h1:m1:s1 h2:m2:s2
h1:m1:s1 h3:m3:s3 (+1)
h1:m1:s1 h4:m4:s4 (+2)...
原题链接1219. 移动距离
题目难度:简单
题目来源:第六届蓝桥杯省赛C++ B组,第六届蓝桥杯省赛Java A/C组
题目描述X星球居民小区的楼房全是一样的,并且按矩阵样式排列。
其楼房的编号为 1,2,3…
当排满一行时,从下一行相邻的楼往反方向排号。
比如:当小区排号宽度为 6 时,开始情形如下:
1231 2 3 4 5 612 11 10 9 8 713 14 15 .....
我们的问题是:已知了两个楼号 m 和 n,需要求出它们之间的最短移动距离(不能斜线方向移动)。
输入格式输入共一行,包含三个整数 w,m,n,w 为排号宽度,m,n 为待计算的楼号。
输出格式输出一个整数,表示 m, n 两楼间最短移动距离。
数据范围1≤w,m,n≤10000
输入样例:16 8 2
输出样例:14
题目分析这道题目的意思非常简单,重在如何进行模拟,或者通过找规律也能做出来
这道题目要求的距离实际上在数学中叫做曼哈顿距离,给定两个点的坐标可以用公式表示为$|x_1-x_2|+|y_1-y_2|$
那么其实问题就变成了如何求这两个编号的坐标了...
原题链接1229. 日期问题
题目难度:简单
题目来源:第八届蓝桥杯省赛C++ B组,第八届蓝桥杯省赛Java B/C组
题目描述小明正在整理一批历史文献。这些历史文献中出现了很多日期。
小明知道这些日期都在1960年1月1日至2059年12月31日。
令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。
更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。
比如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。
给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?
输入格式一个日期,格式是”AA/BB/CC”。
即每个’/’隔开的部分由两个 0-9 之间的数字(不一定相同)组成。
输出格式输出若干个不相同的日期,每个日期一行,格式是”yyyy-MM-dd”。
多个日期按从早到晚排列。
数据范围$0 \le A,B...
SQL简介SQL首先是一门高级语言,同其他的C/C++,Java等语言类似,不同的是他是一种结构化查询语言,用户访问和处理数据库的语言,那类似于C语言,SQL也有自己的标准,目前市面上的数据库系统都支持SQL-92标准
SQL这门语言是具有统一性的,但是不同的数据库支持的SQL有略微差别,他是一门非过程化语言,不像C语言,用户并不关心操作是如何完成的,SQL也是跟其他语言结合有相当广泛的应用的,例如Java,Python
首先SQL对大小写不敏感,其次灵活度非常高,一条语句只以分号结尾,可以任意换行
数据库系统简介数据库(DataBases,DB)其实就是以某种组织方式存储数据的集合,这里的组织方式有很多,例如有使用表(table)的
数据库的应用非常广泛,小到网站,大到各类应用系统,都是基于数据库的
我们对数据库基本分为两类,一类叫做关系型数据库(RDBMS)
名称
简介
Oracle
行业巨头
MySQL
最流行的中大型数据库
SQL server
Windows上最好用的数据库
PostgreSQL
功能最强大的开源数据库
SQLite...
原题链接787. 归并排序
题目难度:简单
题目描述给定你一个长度为 n 的整数数列。
请你使用归并排序对这个数列按照从小到大进行排序。
并将排好序的数列按顺序输出。
输入格式输入共两行,第一行包含整数 n。
第二行包含 n 个整数(所有整数均在 $1 \sim 10^9$ 范围内),表示整个数列。
输出格式输出共一行,包含 n 个整数,表示排好序的数列。
数据范围$1 \le n \le 100000$
输入样例:1253 1 2 4 5
输出样例:11 2 3 4 5
题目分析归并排序是一种非常重要的分治思想,而且代码不是很复杂,是很有可能在做题时被要求手搓归并的
归并排序的整体思想是先递归拆分,再排序,最后合并
拆分是按照位置拆分的,一般都是按照中间位置拆分
这里的难点在于如何合并
我们用双指针,分别指向两个排好序的数组,然后总是选择较小的数存入到新数组中
示例代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555...
原题链接466. 回文日期
题目难度:简单
题目来源:NOIP2016普及组
题目描述在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。
牛牛习惯用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月份,最后 2 位代表日期。
显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。
牛牛认为,一个日期是回文的,当且仅当表示这个日期的 8 位数字是回文的。
现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本身),有多少个真实存在的日期是回文的。
一个 8 位数字是回文的,当且仅当对于所有的 i(1≤i≤8) 从左向右数的第 i 个数字和第 9−i 个数字(即从右向左数的第 i 个数字)是相同的。
例如:
对于 2016 年 11 月 19 日,用 8 位数字 20161119 表示,它不是回文的。
对于 2010 年 1 月 2 日,用 8 位数字 20100102 表示,它是回文的。
对于 2010 年 10 月 2 日,用 8 位数字 20101002 表示,它不是回文的。
输入格式输入包括两行,每行包括一个 8 ...
原题链接1210. 连号区间数
题目难度:简单
题目来源:第四届蓝桥杯省赛C++ B组,第四届蓝桥杯省赛Java B组
题目描述小明这些天一直在思考这样一个奇怪而有趣的问题:
在 $1 \sim N$ 的某个排列中有多少个连号区间呢?
这里所说的连号区间的定义是:
如果区间 $[L, R]$ 里的所有元素(即此排列的第 L 个到第 R 个元素)递增排序后能得到一个长度为 $R-L+1$ 的“连续”数列,则称这个区间连号区间。
当 N 很小的时候,小明可以很快地算出答案,但是当 NNN 变大的时候,问题就不是那么简单了,现在小明需要你的帮助。
输入格式第一行是一个正整数 N,表示排列的规模。
第二行是 N 个不同的数字 $P_i$,表示这 N 个数字的某一排列。
输出格式输出一个整数,表示不同连号区间的数目。
数据范围$1 \le N \le 10000$,$1 \le P_i \le N$
输入样例1:1243 2 4 1
输出样例1:17
输入样例2:1253 4 2 5 1
输出样例2:19
样例解释第一个用例中,有 7 个连号区间分别是:$[1,1], [1...